Add mmio emulation of opcodes 0x3A and 0x85 for SMP W2K3 installation.
authorSteven Hand <steven@xensource.com>
Fri, 22 Sep 2006 13:57:19 +0000 (14:57 +0100)
committerSteven Hand <steven@xensource.com>
Fri, 22 Sep 2006 13:57:19 +0000 (14:57 +0100)
Signed-off-by: Qing He <qing.he@intel.com>
Signed-off-by: Steven Hand <steven@xensource.com>
xen/arch/x86/hvm/platform.c

index 0e4ac486b73d06bf1fd3856a81b43a12f022d647..8f42930e3888a5f3455369c5f55ec499ae76d9ab 100644 (file)
@@ -416,6 +416,11 @@ static int hvm_decode(int realmode, unsigned char *opcode, struct instruction *i
         GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
         return reg_mem(instr->op_size, opcode, instr, rex);
 
+    case 0x3A: /* cmp r8, r8/m8 */
+        instr->instr = INSTR_CMP;
+        GET_OP_SIZE_FOR_BYTE(instr->op_size);
+        return reg_mem(instr->op_size, opcode, instr, rex);
+
     case 0x3B: /* cmp m32/16, r32/16 */
         instr->instr = INSTR_CMP;
         GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
@@ -471,6 +476,11 @@ static int hvm_decode(int realmode, unsigned char *opcode, struct instruction *i
         GET_OP_SIZE_FOR_BYTE(size_reg);
         return mem_reg(size_reg, opcode, instr, rex);
 
+    case 0x85: /* text m16/32, r16/32 */
+        instr->instr = INSTR_TEST;
+        GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
+        return mem_reg(instr->op_size, opcode, instr, rex);
+
     case 0x87:  /* xchg {r/m16|r/m32}, {m/r16|m/r32} */
         instr->instr = INSTR_XCHG;
         GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);